/**
 * 监控首次内容绘制(FCP)性能指标
 * 使用 PerformanceObserver 监听 paint 类型的性能条目
 * 当检测到 first-contentful-paint 条目时收集性能数据并上报
 *
 * 返回值：无
 */
import { lazyReportBatch } from "../report.js";
export default function observerFCP() {
  /**
   * 处理性能观察条目
   * @param {PerformanceObserverEntryList} list - 性能观察条目列表
   */
  const entryHandler = (list) => {
    // 遍历所有性能条目寻找 FCP 指标
    for (const entry of list.getEntries()) {
      if (entry.name === "first-contentful-paint") {
        // 停止观察避免重复上报
        observerr.disconnect();

        // 准备上报数据结构
        const json = entry.toJSON();
        const reportData = {
          ...json,
          type: "performance",
          pageUrl: window.location.href,
          subType: entry.name,
          pageUrl: window.location.href,
        };

        // 发送数据 todo（保留原始注释）
        lazyReportBatch(reportData);
      }
    }
  };

  /* 创建性能观察者实例，用于监听浏览器性能事件 */
  const observerr = new PerformanceObserver(entryHandler);

  /* 开始观察 paint 类型的性能条目，buffered 模式确保能捕获已发生的条目 */
  observerr.observe({ type: "paint", buffered: true });
}
